<meta title="AJAX API" />
<h2>S.get(url, [data], [type], [cfg], [ajaxSetting])</h2>
<h4>返回值<code>Deferred</code></h4>
<p class="lead">get方式请求url</p>
<h4>参数说明</h4>
<table class="table table-bordered table-striped bs-param-table">
    <tr>
        <th>参数名</th>
        <th>类型</th>
        <th>默认值</th>
        <th>说明</th>
    </tr>
    <tr>
        <td>url</td>
        <td>String</td>
        <td>请求的url</td>
        <td></td>
    </tr>
    <tr>
        <td>data</td>
        <td>请求的参数</td>
        <td>请求的url</td>
        <td></td>
    </tr>
    <tr>
        <td>type</td>
        <td>String</td>
        <td><code>json</code></td>
        <td>返回内容格式，xml, html, script, json, text</td>
    </tr>
    <tr>
        <td>cfg</td>
        <td>Object</td>
        <td s="sh" s-sh="{brush:'JScript'}" style="max-width: 150px;">
            {
                startTip: "正在操作，请稍候……",
                successTip: "操作成功",
                errorTip: "操作失败",
                silent: false,
                getErrorMsg: function (xhr, url) {
                    if (xhr.status == "404") {
                        return url + " " + xhr.statusText;
                    }
                    return xhr.responseText;
                }
            }
        </td>
        <td>
            <ul>
                <li><code>startTip</code>：ajax动作条的开始提示信息</li>
                <li><code>successTip</code>：ajax动作条的成功提示信息</li>
                <li><code>errorTip</code>：ajax动作条的错误提示信息</li>
                <li><code>silent</code>：如果为<code>true</code>，将不会触发ajax动作条的信息提示。</li>
                <li><code>getErrorMsg</code>：返回xhr错误的状态提示信息。</li>
            </ul>
        </td>
    </tr>
</table>
<h4>延时成功时的回掉</h4>
<p class="lead">该方法返回Deferred对象，通过注册该返回值的<code>done</code>方法来获得ajax的返回值，如下：</p>
<div class="bs-example" s="sh" s-sh="{phase:'source'}" id="getSource">
    <input type="button" class="btn btn-sm btn-info" value="GET请求数据"
           s-click="testGet()"/>
    <script type="text/plain" s-sh-role="javascript">
        function testGet(){
            S.get("/rest/region/140000").done(function(province, e){
                //e.stopPropagation(); 可以阻止ajax事件冒泡到布局上，即可以阻止全局的ajax动作提示条显示。
                S.alert(JSON.stringify(province));
            });
        }
    </script>
    <script type="text/javascript">
        function testGet(){
            S.get("/rest/region/140000").done(function(province, e){
                S.alert(JSON.stringify(province));
            });
        }
    </script>
</div>
<div class="highlight" s="sh" s-sh="{sourceNode: S.N('#getSource'), brush:'JScript'}"></div>
<h4>延时失败时的回掉</h4>
<p class="lead">该方法返回Deferred对象，通过注册该返回值的<code>fail</code>方法来获得ajax的返回值，如下：</p>
<div class="bs-example" s="sh" s-sh="{phase:'source'}" id="failSource">
    <input type="button" class="btn btn-sm btn-info" value="GET请求数据"
           s-click="testGet()"/>
    <script type="text/plain" s-sh-role="javascript">
        function testGet(){
            S.get("/rest/region/140000").fail(function(xhr, e){
                //xhr 代表当前的jqXHR对象
                //e.stopPropagation(); 可以阻止ajax事件冒泡到布局上，即可以阻止全局的ajax动作提示条显示。
                S.alert(JSON.stringify(province));
            });
        }
    </script>
</div>
<div class="highlight" s="sh" s-sh="{sourceNode: S.N('#getSource'), brush:'JScript'}"></div>
<h3>事件</h3>
<ul>
    <li><code>smart-ajaxStart</code>： ajax开始请求时触发的事件</li>
    <li><code>smart-ajaxSuccess</code>：ajax请求成功时触发的事件</li>
    <li><code>smart-ajaxError</code>：ajax请求错误时触发的事件</li>
    <li><code>smart-ajaxComplete</code>：ajax请求完成时触发的事件，不管ajax请求成功还是失败，都会触发。</li>
</ul>
<h3>静默阻断事件请求</h3>
<blockquote class="lead text-warning">通过配置<code>cfg.silent = true</code>可以静默访问ajax，即不会触发上述ajax事件，通过设置<code>done</code>、<code>fail</code>回掉方法中的参数<code>e.stopPropagation()</code>即可截断相应的<code>smart-ajaxSuccess</code>、<code>smart-ajaxError</code>事件。</blockquote>
<h2>S.post(url, [data], [type], [cfg], [ajaxSetting])</h2>
<p class="lead">post方式请求url</p>
<h2>S.remove(url, [data], [type], [cfg], [ajaxSetting])</h2>
<p class="lead">delete方式请求url</p>
<h2>S.put(url, [data], [type], [cfg], [ajaxSetting])</h2>
<p class="lead">put方式请求url</p>
<h2>S.update(url, [data], [type], [cfg], [ajaxSetting])</h2>
<p class="lead">update方式请求url</p>